// 给定一个不含重复数字的数组 nums ，返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。


// 执行用时：
// 4 ms
// , 在所有 C++ 提交中击败了
// 71.87%
// 的用户
// 内存消耗：
// 8.3 MB
// , 在所有 C++ 提交中击败了
// 8.87%
// 的用户

#include<vector>
#include<string>
#include<set>
using namespace std;
class Solution {
public:
    vector<vector<int>> res;
    vector<vector<int>> permute(vector<int>& nums) {
        vector<int> track;
        trackback(nums,track);
        return res;

    }

    void trackback(vector<int>& nums,vector<int> track){
        if(track.size() == nums.size()){
            res.push_back(track);
            return;
        }
        for (size_t i = 0; i < nums.size(); i++)
        {
            auto iter = find(track.begin(),track.end(),nums[i]);
            if(iter != track.end()){
                continue;
            }
            track.push_back(nums[i]);
            trackback(nums,track);
            track.pop_back();
        }
        
    }
};